
--- 处理支付成功的 lua 脚本. 使用 redis stream 实现的消息队列

--- XGROUP CREATE key groupName ID [MKSTREAM] -> 创建消费者组
--- XGROUP CREATE k_pay_success g_openai $ MKSTREAM
--- 1) key 队列名称 -> 给哪个组创建消费者组
--- 2) groupName 消费者组名称
--- 3) ID -> 起始ID标识, $表示队列中最后一个消息, 0表示队列中第一个消息.
--- 4) MKSTREAM -> 队列不存在时自动创建队列

--- XREADGROUP GROUP g_openai c_consumer1 COUNT 1 BLOCK 2000 STREAMS k_pay_success >
--- 指定消费者 c_consumer1 从消费者组 g_openai 的 k_pay_success 队列中每次读取一条消息
--- 如果消费者 c_consumer1 不存在会自动创建
--- 其中 > 表示读取当前尚未消费的消息 每次读取一个消息,阻塞时间为2000ms, 最多等待2s
---     0 表示从 pending-list 中的第一个开始获取已经消费但是未确认的消息

--- XACK key group ID[ID...] -> 将指定ID的消息从 pending-list 中移除(类似 kafka 的ack确认机制)
--- XACK k_pay_success g_openai 1646339541426-0

--- XPENDING key group - + [consumer] -> 获取消费者组中消费者的所有 pending-list ( - + 表示空闲时间不做筛选, 获取全部)
--- XPENDING k_pay_success g_openai - + c_consumer1 -> 获取消费者 c_consumer1 的所有 pending-list

--- XGROUP DESTROY key groupName -> 删除指定消费者组
--- XGROUP CREATECONSUMER key groupName consumerName -> 给指定消费者组添加消费者 -> 不需要手动添加消费者,
---                                                 从消费者组读取消息的时候指定消费者, 如果消费者不存在会自动创建
--- XGROUP DELCONSUMER key groupName consumerName -> 删除消费者组中指定的消费者


--- 向队列中发送一条消息
local orderIdKey = ARGV[1]
local orderId = ARGV[2]
redis.call('xadd', 'k_pay_success', '*', orderIdKey, orderId)
return 0

